/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package MSG_connect;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.SQLException;
import java.util.List;

import pojo.Cliente;
import pojo.Produto;
import pojo.Venda;
import pojo.Vendedor;
import dao.Conexao;
import dao.DaoCliente;
import dao.DaoProduto;
import dao.DaoVendedor;

/**
 *
 * 
 */


public class RMI_Impl extends UnicastRemoteObject  implements I_RMI {

  /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

/**
	 * 
	 */

public RMI_Impl() throws RemoteException {
    super();
  }

@Override
public String Gravar(Object obj) throws RemoteException {
	if(obj.getClass()==Cliente.class){
		System.out.println("entramos na parada aki");
		 DaoCliente dao = new DaoCliente(Conexao.getEntityManager());
		 System.out.println("Cadastro de Cliente");
		 Cliente cli =(Cliente) obj;
			try {
				dao.gravar(cli);
				return "Cliente Cadastrado com sucesso";
			} catch (SQLException e) {
				return "Nao foi Possivel Gravar o cliente";
			}
	}else
		if(obj.getClass()==Vendedor.class){
			System.out.println("gravando Vendedor");
			DaoVendedor dao = new DaoVendedor(Conexao.getEntityManager());
			Vendedor v  = (Vendedor) obj;
			try {
				dao.gravar(v);
				return "Vendedor Cadastrado com sucesso";
			} catch (SQLException e) {
				return "Nao foi possivel Cadastrar o vendedor";
			}
		}else
			if(obj.getClass()==Produto.class){
				DaoProduto dao = new DaoProduto(Conexao.getEntityManager());
				Produto p = (Produto) obj;
				try {
					dao.gravar(p);
					return "Produto Cadastrado com Sucesso";
				} catch (SQLException e) {
					return "Nao foi possivel Cadastrar o Produto";
				}
			}
				else
					if(obj.getClass()==Venda.class){
						return "Gravando Venda :D";
					}
			
	return "False";
}

@Override
public String Excluir(Object obj) throws RemoteException {
	if(obj.getClass()==Cliente.class){
		 DaoCliente dao = new DaoCliente(Conexao.getEntityManager());
		 Cliente cli =(Cliente) obj;
			try {
				dao.excluir(cli);
				return "Cliente Excluido da base de dados";
			} catch (SQLException e) {
				return "Nao foi Possivel Excluir o cliente";
			}
	}else
		if(obj.getClass()==Vendedor.class){
			DaoVendedor dao = new DaoVendedor(Conexao.getEntityManager());
			Vendedor v  = (Vendedor) obj;
			try {
				dao.excluir(v);
				return "Vendedor Excluido com sucesso";
			} catch (SQLException e) {
				return "Nao foi possivel Cadastrar o vendedor";
			}
		}else
			if(obj.getClass()==Produto.class){
				DaoProduto dao = new DaoProduto(Conexao.getEntityManager());
				Produto p = (Produto) obj;
				try {
					dao.excluir(p);
					return "Produto Excluido com Sucesso";
				} catch (SQLException e) {
					return "Nao foi possivel Cadastrar o Produto";
				}
			}
				else
					if(obj.getClass()==Venda.class){
						return "Gravando Venda :D";
					}
			
	return "False";
}

@Override
public String Atualizar(Object obj) throws RemoteException {
	if(obj.getClass()==Cliente.class){
		 DaoCliente dao = new DaoCliente(Conexao.getEntityManager());
		 System.out.println("Cadastro de Cliente");
		 Cliente cli =(Cliente) obj;
			try {
				dao.atualizar(cli);
				return "Cliente Atualizado com sucesso";
			} catch (SQLException e) {
				return "Nao foi Possivel Atualizar o cliente";
			}
	}else
		if(obj.getClass()==Vendedor.class){
				DaoVendedor dao = new DaoVendedor(Conexao.getEntityManager());
				Vendedor v  = (Vendedor) obj;
				try {
					dao.atualizar(v);
					return "Vendedor Atualizado com sucesso";
				} catch (SQLException e) {
					return "Nao foi possivel Atualizar o vendedor";
				}
			}else
				if(obj.getClass()==Produto.class){
					DaoProduto dao = new DaoProduto(Conexao.getEntityManager());
					Produto p = (Produto) obj;
					try {
						dao.atualizar(p);
						return "Produto Atualizado com Sucesso";
					} catch (SQLException e) {
						return "Nao foi possivel Atualizar o Produto";
					}
				}
				
		return "False";
}


@Override
public List<Cliente> ListarClientes() throws RemoteException{
	DaoCliente dao = new DaoCliente(Conexao.getEntityManager());
	try {
		return dao.obterLista(Cliente.class);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return null;
}

@Override
public Object Buscar(String tipo, String valor) throws RemoteException {
	if(tipo.equals("Cliente")){
		DaoCliente dao = new DaoCliente(Conexao.getEntityManager());
		try {
			System.out.println("Entrou aki");
			return dao.buscar(valor);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}else
		if(tipo.equals("Vendedor")){
			DaoVendedor dao = new DaoVendedor(Conexao.getEntityManager());
			try {
				return dao.buscar(valor);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}else
			if(tipo.equals("Produto")){
				DaoProduto dao = new  DaoProduto(Conexao.getEntityManager());
				try {
					return dao.buscar(valor);
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
	return null;
}

@Override
public List<Produto> ListarProdutos() throws RemoteException {
	DaoProduto dao = new DaoProduto(Conexao.getEntityManager());
	try {
		return dao.obterLista(Produto.class);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return null;
}

@Override
public List<Vendedor> ListarVendedores() throws RemoteException {
	DaoVendedor dao = new DaoVendedor(Conexao.getEntityManager());
	try {
		return dao.obterLista(Vendedor.class);
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	return null;
}



}